EKSコントロールプレーンのログ記録を有効化してみた
こんにちは、ゲームソリューション部のsoraです。
今回は、EKSコントロールプレーンのログ記録を有効化してみたことについて書いていきます。
事前準備
クライアント実行環境
クライアントとしてCloud9(インスタンスタイプ:t2.micro)を使用します。
aws-cli・eksctl・kubectlが必要なため、インストールしておきます。
CLIからログ有効化をする場合は、AWS CLIのバージョンは1.16.139以上である必要があります。
今回の環境におけるそれぞれのバージョンは以下です。
$ aws --version aws-cli/2.13.12 $ eksctl version 0.154.0 $ kubectl version --short Client Version: v1.27.1-eks-2f008fe Kustomize Version: v5.0.1
クラスター作成
クラスターがないため、ログ取得対象となるクラスターを作成します。
# クラスターの作成 eksctl create cluster \ --name=eks-cluster \ --version 1.27 \ --nodegroup-name=eks-nodegroup \ --region ap-northeast-1 #クラスタ確認 $ eksctl get cluster NAME REGION EKSCTL CREATED eks-cluster ap-northeast-1 True
設定可能なログ
EKSクラスターのコントロールプレーンのログ記録を有効化するとCloudWatch Logsにログが保存されます。
設定可能なログは以下です。
- APIサーバ:クラスターへのAPIリクエストに関するログ。Kubernetes APIを外部に公開するコンポーネント
- 監査:Kubernetes APIを使用したクラスターアクセス(ユーザ・管理者・システムコンポーネント)に関するログ
- Authenticator:クラスターへのRBAC認証リクエストに関するログ
- コントローラーマネージャー:クラスターコントローラーの状態に関するログ。複数のコントローラープロセスを実行するコンポーネント
- スケジューラ:スケジュール決定に関するログ。PodのNodeへの割り当てなどを管理するコンポーネント
クラスターのログ記録の有効化
AWSマネージメントコンソールでの設定
AWSマネージメントコンソールから設定する場合は、EKSクラスターのログ記録から有効化することができます。
必要なログを選択して、変更内容を保存するとログ記録が有効化されます。
CLIでの設定
CLIで設定する場合は、以下コマンドにてログ記録を有効化します。
# クラスターのログ記録の有効化(loggingの{}内で必要なログを指定) $ aws eks update-cluster-config \ --region ap-northeast-1 \ --name eks-cluster \ --logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":true}]}' # 実行結果 { "update": { "id": "93303af8-a1d2-4afa-afbf-a91e66200633", "status": "InProgress", "type": "LoggingUpdate", "params": [ { "type": "ClusterLogging", "value": "{\"clusterLogging\":[{\"types\":[\"api\",\"audit\",\"authenticator\",\"controllerManager\",\"scheduler\"],\"enabled\":true}]}" } ], "createdAt": "2023-09-21T02:56:02.764000+00:00", "errors": [] } } # ログ記録の有効化のステータス確認(statusがSuccessfulは更新完了、InProgressは更新中) $ aws eks describe-update \ --region ap-northeast-1 \ --name eks-cluster \ --update-id 93303af8-a1d2-4afa-afbf-a91e66200633 # 実行結果 { "update": { "id": "93303af8-a1d2-4afa-afbf-a91e66200633", "status": "Successful", "type": "LoggingUpdate", "params": [ { "type": "ClusterLogging", "value": "{\"clusterLogging\":[{\"types\":[\"api\",\"audit\",\"authenticator\",\"controllerManager\",\"scheduler\"],\"enabled\":true}]}" } ], "createdAt": "2023-09-21T02:56:02.764000+00:00", "errors": [] } }
無効化する場合は、--logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":true}]}'
の"enabled":true
の部分を"enabled":false
にすることで無効化できます。
CloudWatch Logsの確認
有効化した後、CloudWatch Logsを確認するとロググループが作成されて、ログが出力されていることが確認できます。
参考情報
Amazon EKS コントロールプレーンのログ記録(AWS公式)
最後に
今回は、EKSコントロールプレーンのログ記録を有効化してみたことを記事にしました。
どなたかの参考になると幸いです。